#ifndef GAME_OBJECT_MANAGER_HPP
#define GAME_OBJECT_MANAGER_HPP

#include <Ogre.h>

#include "GameObject.hpp"

// This will be the class that manages all of the entities in the simulation.
// An GameObject is the most basic unit of something. For more info on GameObjects, 
// see its hpp file. 
//
// The GameObjectManager stores ALL GameObjects created in a large flat list 
// that is ignorant of any hierarchy. On every frame, it goes through the list
// of all GameObjects and updates their status by running each of their update
// functions. The hierarchy is handled by the GameObjects themselves, which set
// and manage their own children. All the children however, must first be created
// through the GameObjectManager interface.

/**********************************
class GameObjectManager
{
	public: 

		// Constructor.
		GameObjectManager();

		// Update function, must be called by the GameState every frame.
		void updateGameObjectManager(double timeSinceLastFrame);

		// Create a new game object, add it to the manager, and return a pointer.
		GameObject* createNewGameObject(String i_sGameObjectName);

		// Add GameObject to the vector.
		void addGameObjectToList(GameObject* i_pGameObject);

	private:

		// The actual list of vectors.
		std::vector<GameObject> m_GameObjectList;

};

***************************************/

#endif